local actions = 
{
    --[[
        数据示例:
        actiondata:表，用于Action的构造函数，具体内容如下：
        {
            --基本属性
            priority 
                1.动作优先级，数字类型，默认值0
                2.动作收集器收集动作时会将当前可用的动作根据优先级排序，越大越先显示。
            instant 
                1.布尔类型，默认值false
                2.决定动作是否立即执行，不需要移动或等待状态图完成
            rmb 
                1.标识这个动作是否通过右键触发，布尔类型，默认值nil
            distance 
                1.数字类型，默认值nil
                2.执行该动作时玩家与目标之间的最大允许距离，如果玩家与目标距离超过此值，角色会先移动到合适距离再执行动作
            mindistance 
                1.最小执行距离，数字类型，默认值nil
                2.如果玩家与目标距离小于此值，角色会先后退到合适距离再执行动作。主要用于避免过于接近目标的情况。
            arrivedist 
                1.到达距离，数字类型，默认值nil
                2.当角色移动到距离目标arrivedist范围内时，就认为已经到达目标位置，可以开始执行动作。这个值通常用于精确控制角色停止移动的位置。

            状态有效性属性
            ghost_valid 
                1.制动作是否在玩家死亡变为幽灵状态时可用，布尔类型，默认值false
            ghost_exclusive 
                1.制动作是否仅在幽灵状态下可用，活着时不可用，布尔类型，默认值false
            mount_valid 
                1.控制动作是否在玩家骑乘状态(如骑牛、骑船等)下可用，布尔类型，默认值false
            encumbered_valid 
                1.控制动作是否在玩家负重状态(携带重物如巨石)下可用，布尔类型，默认值false
            floating_valid 
                1.是否对漂浮状态有效，比如使用个人漂浮装置的时候能否触发动作，布尔类型，默认值false
            paused_valid 
                1.控制动作是否在游戏暂停状态下可用，布尔类型，默认值false，开启后动作优先级会非常高

            --行为控制属性
            canforce - 控制动作是否可以被强制执行，比如强制攻击、强制拾取之类，通常用于需要绕过某些条件检查的动作，布尔类型，默认值nil
            rangecheckfn：自定义范围检查函数，函数类型，默认值nil，只有当canforce属性不为nil时，rangecheckfn才会被设置，具体如下：
                {
                    doer：执行动作的实体（通常是玩家）
                    target：目标实体
                    bufferedaction: 缓冲动作对象（可选参数）
                    返回值：bool，表示是否在范围内
                }
            silent_fail 
                是否静默失败，布尔类型，默认值nil
                动作失败是否会调用talker显示失败语句
            actionmeter 
                1.是否显示动作进度条，布尔类型，默认值nil
                2.当设置为 true 时，执行动作时会显示环形进度条，类似熔炉拉人那种，只有在dolongaction中才会检测该属性
            invalid_hold_action 
                1.是否为无效的持续动作，布尔类型，默认值nil
                2.当设置为 true 时，防止该动作被持续执行（即按住按键时不会重复触发）
            invalid_hold_action 
                1.是否为无效的持续动作，布尔类型，默认值nil
                2.当设置为 true 时，防止该动作被持续执行（即按住按键时不会重复触发）


            --移动相关属性
            customarrivecheck - 自定义到达检查函数，函数类型，默认值nil，具体如下：
                {
                    doer - 执行动作的实体（通常是玩家）
                    dest - 目标位置对象，即Point（x），通过dest:GetPoint()获取位置
                    返回值：
                    reached_dest - 布尔值，是否已到达目标位置
                    invalid - 布尔值，目标位置是否无效（可选）
                    备注：
                        1.如果设置了这个，会跳过默认的距离检查，而依据该函数的invalid值来判断是否到达停止移动
                        2.在locomotor的OnUpdate方法中每帧检查
                        3.只有当实体有bufferedaction且action设置了customarrivecheck时才调用
                }
            is_relative_to_platform 
                1.是否相对于平台，布尔类型，默认值nil
                2.指示此动作的位置计算是否相对于平台（船只、浮台等）
                3.比如海上钓鱼等需要考虑平台位置的动作
                4.实现机制： 在网络同步时，客户端发送的位置坐标会根据平台进行相对转换

            disable_platform_hopping 
                1.是否禁用平台跳跃，布尔类型，默认值nil
                2.禁止角色在执行此动作时进行平台间跳跃
                3.适用于海钓、船只操作等需要保持在特定平台上的动作
                4.实现机制： 在locomotor的OnUpdate中检查self.bufferedaction.action.disable_platform_hopping

            skip_locomotor_facing 
                1.是否跳过移动朝向，布尔类型，默认值nil
                2.跳过自动调整角色面向目标的机制
                3. 不需要角色转身面对目标的动作，如某些瞬发技能
                4.实现机制：在locomotor到达目标时，检查此标志决定是否调用FaceMovePoint

            do_not_locomote 
                1.是否不移动，布尔类型，默认值nil
                2.阻止角色为了执行动作而移动到目标位置
                3.适用于远程动作、瞬发动作或在当前位置执行的动作，比如船只设定航向、健身房动作失败等

            extra_arrive_dist 
                1.为特定动作添加额外的到达距离计算，数字类型，默认值nil
                2.比如部署物品时根据物品大小调整到达距离
                3.实现机制：在locomotor计算arrive_dist时调用此函数并加到基础距离上


            --界面相关属性
            tile_placer 
                1.字符串类型，默认值nil
                2.指定要使用的瓦片放置器prefab名称，常见的如"gridplacer"（网格放置器）
                3.适用于地形改造、瓦片放置等需要网格对齐的动作
                4. 在playercontroller中根据此值生成对应的放置器实体

            show_tile_placer_fn
                1.显示瓦片放置器的函数，函数类型，默认值nil
                2.控制何时显示瓦片放置器的自定义函数
                3.参数为action，返回布尔值
                4. playercontroller的OnUpdate中调用此函数判断是否显示terraform

            show_primary_input_left 
                1.布尔类型，默认值nil
                2.在hover提示中显示主要输入按键（通常是左键）的提示
                3.适用于需要明确提示使用左键的动作
                4. 在hoverer组件中检查此标志，添加本地化的按键提示到动作字符串前

            show_secondary_input_right 
                1. 布尔类型，默认值nil
                2.在hover提示中显示次要输入按键（通常是右键）的提示
                3.适用于 需要明确提示使用右键的动作， 在hoverer组件中检查此标志，添加本地化的按键提示到动作字符串后

            
            --音效相关属性
            theme_music - 执行动作时播放的音乐，字符串类型，默认值nil
            theme_music_fn 
                1.客户端主题音乐函数，函数类型，默认值nil
                2.用于动态确定播放的音乐
                3.参数为act动作对象，返回字符串类型的音乐名称或nil


            --回调属性
            pre_action_cb 
                1.动作前回调函数，函数类型，默认值nil
                2.在客户端和服务端都会运行
                3.参数为缓冲动作对象(BufferedAction)，无返回值
                4. 在动作开始执行前调用



            --地图相关属性
            map_action
                1.是否为地图动作，布尔类型，默认值nil
                2.标识该动作是否为地图动作，只能从地图上处理并有动作翻译
            closes_map
                1.是否关闭地图，布尔类型，默认值nil
                2. 是否在动作开始执行时立即关闭小地图
            map_only
                1.是否仅在地图上存在，布尔类型，默认值nil
                2. 当设置为true时，该动作只能在地图界面中使用，不能在正常游戏界面触发
            map_works_on_unexplored
                1.是否对未探索区域生效，布尔类型，默认值nil
                2. 当设置为true时，该动作可以对玩家尚未探索的地图区域生效，无需满足视线范围限制
        },

        id:动作的唯一标识，字符串，一般是大写英文
        str：动作的名称，字符串，自动添加到STRINGS.ACTIONS[action.id]中用于本地化
        fn：触发动作时执行的逻辑函数，函数类型，具体如下：
            {
                参数：act，动作对象,继承了BufferedAction类，具体如下
                    {--注意，使用时除非确定，不然建议都先判空
                        act.doer - 执行动作的实体（通常是玩家或生物）
                        act.target - 动作的目标实体
                        act.invobject - 使用的物品/工具（来自背包）
                        act.pos - 动作的位置坐标（DynamicPosition对象）
                        act.action - 动作类型（Action对象），即动作的定义表，上面actiondata表中的内容
                        act.recipe - 配方信息（用于制作类动作）
                        act.rotation - 旋转角度（默认为0）
                        act.distance - 动作距离
                        act.arrivedist - 到达距离
                        act.forced - 是否强制执行
                        act.skin - 皮肤信息
                        act.options - 额外选项表
                    }
                返回值：bool，表示是否成功执行。当返回false的时候，可以再跟一个字符串，表示动作失败的原因
                        后续通过STINGS来配置动作失败时的人物提示
            }
        type：组件动作类型，字符串，固定值，内容如下：
            {
                1.SCENCE
                    {--适用于与世界中的对象直接交互，如激活机器、打开容器等
                        inst: 目标实体（被交互的对象）
                        doer: 执行者（进行交互的角色）
                        actions: 动作列表（用于添加可执行的动作）
                        right: 是否为右键操作  
                    }
                    
                2.USEITEM
                    {--使用背包中的物品对世界中的对象进行操作
                        inst: 使用的物品
                        doer: 执行者
                        target: 目标对象
                        actions: 动作列表
                        right: 是否为右键操作  
                    }
                    
                3.POINT
                    {--在世界中的特定位置使用物品
                        inst: 使用的物品
                        doer: 执行者
                        pos: 目标位置
                        actions: 动作列表
                        right: 是否为右键操作
                        target: 可选的目标对象    
                    }
                    
                4.EQUIPPED
                    {--使用已装备的物品对目标进行操作
                        inst: 装备的物品
                        doer: 执行者
                        target: 目标对象
                        actions: 动作列表
                        right: 是否为右键操作   
                    }
                    
                5. INVENTORY 
                    {--直接使用背包中的物品，不需要目标对象
                        inst: 背包中的物品
                        doer: 执行者
                        actions: 动作列表
                        right: 是否为右键操作
                    } 
                
                6. ISVALID
                    {--验证特定动作是否对该实体有效
                        inst: 实体对象
                        action: 要验证的动作
                        right: 是否为右键操作
                    }
        needcomponent：string，动作绑定的组件名
        componentactionfn：
            1.动作的采集函数，决定系统在什么情况下将动作添加到动作列表中
            2.函数的参数与组件动作的类型有关，即根据type的值来决定参数
            3.满足条件时通过table.insert(actions, ACTIONS.XXX)将动作添加到动作列表中
        actionstring：string，人物动作动画的名称，用于决定人物在执行该动作时播放什么动画
        faildata：动作失败时的字符串配置，表，格式如下
            {
                XXX = 'aaaa'
                其中，XXX是你动作的执行函数fn返回false时，附带的失败原因字符串
                aaaa则是该原因下人物说话提示的内容
            }
        }
    ]]
    {

    },

}





return actions